package stud.mpgame.flash.map;

/**
 * ...
 * GiorgeEfremov
 */
import flash.Lib;
import stud.mpgame.flash.map.hxjson2.JSON;
import stud.mpgame.flash.map.hxjson2.JSONDecoder;
import stud.mpgame.flash.map.hxjson2.JSONParseError;
import stud.mpgame.flash.map.hxjson2.JSONToken;
import stud.mpgame.flash.map.hxjson2.JSONTokenizer;
import flash.events.Event;
import flash.events.TextEvent;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import stud.mpgame.flash.map.GameMap;
class JsonDataProvider 
{   
	
	private var myRec :URLRequest;
	private var myURL :URLLoader;
	private var text :String;
	private var json :JSON;
	private var object :Dynamic;
    private var gm:Dynamic;
	private var mapF:GameMap->Void;
	public function new() 
	{
		
	}
	//Передаем в провайд url карты и функцию, которая будет работать с нашей картой
	public function provide(S:String, onComplete:GameMap->Void) {
	  mapF = onComplete;
      myRec = new URLRequest();
	  myRec.url = S;
	  myURL = new URLLoader();
	  myURL.dataFormat = URLLoaderDataFormat.TEXT;
	  myURL.load(myRec);
	  myURL.addEventListener(Event.COMPLETE,  loadComplete);	
    }
	//Когда данные карты будут загружены переводим json строку в объект и создаем класс GameMap, после 
	
	public function loadComplete(ev:Event){
	
	  text = myURL.data;
	  json = new JSON();	
      object = json.decode(text);
	  gm = new GameMap(object);	
      mapF(gm);

	
	}			
}